home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 176-200 / scopedisk191 / coreeye / deb.asm < prev    next >
Assembly Source File  |  1995-03-19  |  7KB  |  337 lines

  1. ********************************************************************************
  2. *               Debugger for CoreEye by MC68                   *
  3. *       If you find any bugs in the program please let me know.           *
  4. *               Write to the following address:                   *
  5. *                Andrzej Fien          Finished: 14.09.1990 *
  6. *                ul.Turkienicza 17/26                   *
  7. *                   35-010 Rzeszow                       *
  8. *                   POLAND                       *
  9. ********************************************************************************
  10.  
  11. OpenLibrary        EQU        -552        ;(libName,version)(A1,D0)
  12. CloseLibrary        EQU        -414        ;(library)(A1)
  13. AllocMem        EQU        -198        ;(byteSize,requirements)(D0-D1)
  14. FreeMem            EQU        -210        ;(memoryBlock,byteSize)(A1,D0)
  15. FindTask        EQU        -294        ;(name)(A1)
  16. GetMsg            EQU        -372        ;(port)(A0)
  17. ReplyMsg        EQU        -378        ;(message)(A1)
  18. WaitPort        EQU        -384        ;(port)(A0)
  19.  
  20. Open            EQU        -30        ;(name,accessMode)(D1-D2)
  21. Close            EQU        -36        ;(file)(D1)
  22. Read            EQU        -42        ;(file,buffer,length)(D1-D3)
  23. Write            EQU        -48        ;(file,buffer,length)(D1-D3)
  24. Output            EQU        -60        ;()
  25. Lock            EQU        -84        ;(name,type)(D1-D2)
  26. UnLock            EQU        -90        ;(lock)(D1)
  27. Examine            EQU        -102        ;(lock,fileInfoBlock)(D1-D2)
  28. Execute            EQU        -222        ;(string,file,file)(D1-D3)
  29.  
  30. *            stack frame map
  31. Flags            EQU        -60
  32. WhichFile        EQU        -59
  33. NumberFiles        EQU        -58
  34. FromFile        EQU        -57
  35. ClickCounter        EQU        -56
  36. ByteMode        EQU        -55
  37. SaveLock        EQU        -52
  38. SaveLength        EQU        -48
  39. WBMessage        EQU        -44
  40. PublicMem        EQU        -40
  41. ChipMem            EQU        -36
  42. RP2            EQU        -32
  43. WW2            EQU        -28
  44. RP1            EQU        -24
  45. WW1            EQU        -20
  46. IntBase            EQU        -16
  47. GfxBase            EQU        -12
  48. DosBase            EQU        -8
  49. Pointer            EQU        -4
  50.  
  51. ******************** Code ******************************************************
  52.  
  53.             MOVE.L        4.W,A6
  54.             MOVE.L        #20000,D0
  55.             MOVEQ        #1,D1
  56.             JSR        AllocMem(A6)
  57.             MOVE.L        D0,MemPtr
  58.             BEQ.W        ProgramReady
  59.             LEA        DosName(PC),A1
  60.             MOVEQ        #0,D0
  61.             JSR        OpenLibrary(A6)
  62.             MOVE.L        D0,A6
  63.             MOVE.L        #XFile,D1
  64.             MOVE.L        #1005,D2
  65.             JSR        Open(A6)
  66.             MOVE.L        D0,D1
  67.             MOVE.L        D0,-(A7)
  68.             MOVE.L        MemPtr(PC),D2
  69.             MOVE.L        #20000,D3
  70.             JSR        Read(A6)
  71.             MOVE.L        (A7)+,D1
  72.             JSR        Close(A6)
  73.             MOVE.L        MemPtr(PC),A0
  74. SearchHunkCode        CMPI.L        #$3E9,(A0)+
  75.             BNE.S        SearchHunkCode
  76.             MOVE.L        (A0)+,D0
  77.             LSL.L        #2,D0
  78.             MOVE.W        D0,CodeOnly
  79.             LEA        0(A0,D0.W),A1
  80.             MOVE.L        A1,A2
  81.             MOVE.L        A0,CodePtr
  82. SearchHunkReloc        CMPI.L        #$3EC,(A1)+
  83.             BNE.S        SearchHunkReloc
  84.             MOVE.L        (A1)+,D1
  85.             ADDQ.W        #4,A1
  86.             SUBQ.W        #1,D1
  87.             MOVE.W        D1,Counter+2
  88. RebuiltReloc        MOVE.L        (A1)+,D2
  89.             MOVE.W        D2,(A2)+
  90.             DBF        D1,RebuiltReloc
  91.             SUBA.L        A0,A2
  92.             MOVE.W        A2,Decrunched
  93.             MOVE.L        #WorkFile,D1
  94.             MOVE.L        #1006,D2
  95.             JSR        Open(A6)
  96.             MOVE.L        D0,D1
  97.             MOVE.L        D0,-(A7)
  98.             MOVE.L        CodePtr(PC),D2
  99.             MOVE.W        Decrunched(PC),D3
  100.             EXT.L        D3
  101.             JSR        Write(A6)
  102.             MOVE.L        (A7)+,D1
  103.             JSR        Close(A6)
  104.             MOVE.L        #PowerPacker,D1
  105.             MOVEQ        #0,D2
  106.             MOVEQ        #0,D3
  107.             JSR        Execute(A6)
  108.             MOVE.L        #WorkFile,D1
  109.             MOVEQ        #-2,D2
  110.             JSR        Lock(A6)
  111.             MOVE.L        D0,D1
  112.             MOVE.L        D0,-(A7)
  113.             MOVE.L        MemPtr(PC),D2
  114.             JSR        Examine(A6)
  115.             MOVE.L        (A7)+,D1
  116.             JSR        UnLock(A6)
  117.             MOVE.L        MemPtr(PC),A3
  118.             MOVE.L        124(A3),D0
  119.             SUBI.W        #12,D0
  120.             MOVE.W        D0,Crunched
  121.             MOVE.L        #WorkFile,D1
  122.             MOVE.L        #1005,D2
  123.             JSR        Open(A6)
  124.             MOVE.L        D0,D1
  125.             MOVE.L        D0,-(A7)
  126.             MOVE.L        MemPtr(PC),D2
  127.             MOVE.L        #20000,D3
  128.             JSR        Read(A6)
  129.             MOVE.L        (A7)+,D1
  130.             JSR        Close(A6)
  131.             MOVE.L        MemPtr(PC),A0
  132.             ADDQ.W        #4,A0
  133.             MOVE.W        Crunched(PC),D0
  134.             ADDQ.W        #3,D0
  135.             LEA        Place(PC),A1
  136. MoveProgram        MOVE.B        (A0)+,(A1)+
  137.             DBF        D0,MoveProgram
  138.             MOVE.B        3(A0),Corect3+1
  139.             SUBA.L        #Code,A1
  140.             MOVE.L        A1,D0
  141.             BTST        #1,D0
  142.             BEQ.S        LWAlign
  143.             ADDQ.W        #2,D0
  144. LWAlign            LEA        Code(PC),A0
  145.             LEA        0(A0,D0.W),A1
  146.             MOVE.L        #$3F2,(A1)+
  147.             SUBA.L        #Program,A1
  148.             MOVE.W        A1,AllLength
  149.             LSR.L        #2,D0
  150.             MOVE.L        D0,Length1
  151.             MOVE.L        D0,Length2
  152.             LSL.L        #2,D0
  153.             SUBI.W        #16,D0
  154.             LSR.W        #1,D0
  155.             SUBQ.W        #1,D0
  156.             MOVE.W        D0,Code+2
  157.             MOVE.W        CodeOnly(PC),D0
  158.             ADDI.W        #732,D0
  159.             BTST        #2,D0
  160.             BEQ.S        DLWAlign
  161.             ADDQ.W        #4,D0
  162. DLWAlign        MOVE.L        D0,Begin+6
  163.             MOVE.L        D0,FreeChipMem+2
  164.             MOVE.W        Decrunched(PC),Corect1+2
  165.             MOVE.W        Crunched(PC),D0
  166.             ADD.W        D0,Corect1+6
  167.             MOVE.W        CodeOnly(PC),Corect2+2
  168.             BSR.W        Code
  169.             MOVE.L        #EyeFile,D1
  170.             MOVE.L        #1006,D2
  171.             JSR        Open(A6)
  172.             MOVE.L        D0,D1
  173.             MOVE.L        D0,-(A7)
  174.             MOVE.L        #Program,D2
  175.             MOVE.W        AllLength(PC),D3
  176.             EXT.L        D3
  177.             JSR        Write(A6)
  178.             MOVE.L        (A7)+,D1
  179.             JSR        Close(A6)
  180.             MOVE.L        A6,A1
  181.             MOVE.L        4.W,A6
  182.             JSR        CloseLibrary(A6)
  183.             MOVE.L        MemPtr(PC),A1
  184.             MOVE.L        #20000,D0
  185.             JSR        FreeMem(A6)
  186. ProgramReady        MOVEQ        #0,D0
  187.             RTS
  188.  
  189. MemPtr            DC.L        0
  190. CodePtr            DC.L        0
  191. CodeOnly        DC.W        0
  192. Decrunched        DC.W        0
  193. Crunched        DC.W        0
  194. AllLength        DC.W        0
  195. XFile            DC.B        'x',0
  196. WorkFile        DC.B        'x.work',0
  197. EyeFile            DC.B        'Eye',0
  198. PowerPacker        DC.B        'sys:tools/pp',0
  199.             EVEN
  200.  
  201. Program            DC.L        $3F3,0,1,0,0
  202. Length1            DC.L        0,$3E9
  203. Length2            DC.L        0
  204. Code            MOVE.W        #0,D0
  205.             LEA        Begin(PC),A0
  206. Decode            EORI.W        #$620D,(A0)+
  207.             DBF        D0,Decode
  208. Begin            MOVE.L        4.W,A6
  209.             MOVE.L        #0,D0
  210.             MOVEQ        #2,D1
  211.             JSR        AllocMem(A6)
  212.             LINK        A4,#-60
  213.             MOVE.L        D0,ChipMem(A4)
  214.             BEQ.W        Quit
  215.             CLR.L        WBMessage(A4)
  216.             LEA        DosName(PC),A1
  217.             MOVEQ        #0,D0
  218.             JSR        OpenLibrary(A6)
  219.             MOVE.L        D0,DosBase(A4)
  220.             BEQ.W        FreeChipMem
  221.             SUBA.L        A1,A1
  222.             JSR        FindTask(A6)
  223.             MOVE.L        D0,A3
  224.             TST.L        172(A3)
  225.             BEQ.S        FromWB
  226.             MOVE.L        DosBase(A4),A6
  227.             JSR        Output(A6)
  228.             MOVE.L        D0,D1
  229.             LEA        Copyright(PC),A0
  230.             MOVE.L        A0,D2
  231.             MOVEQ        #TextLength,D3
  232.             JSR        Write(A6)
  233.             MOVE.L        4.W,A6
  234.             BRA.S        AfterGetMsg
  235. FromWB            LEA        92(A3),A0
  236.             JSR        WaitPort(A6)
  237.             LEA        92(A3),A0
  238.             JSR        GetMsg(A6)
  239.             MOVE.L        D0,WBMessage(A4)
  240. AfterGetMsg        MOVE.L        ChipMem(A4),A2
  241. Corect1            LEA        0(A2),A1
  242.             LEA        Place+4(PC),A0
  243.             BSR.S        Decrunch
  244. Corect2            LEA        0(A2),A0
  245.             MOVE.L        A0,A3
  246.             MOVE.L        A2,D0
  247. Counter            MOVE.W        #0,D1
  248. Reloc32            MOVE.W        (A0)+,D2
  249.             ADD.L        D0,0(A2,D2.W)
  250.             DBF        D1,Reloc32
  251.             MOVE.W        #732/2-1,D1
  252. ClearBuffers        CLR.W        (A3)+
  253.             DBF        D1,ClearBuffers
  254.             JSR        (A2)
  255.             MOVE.L        DosBase(A4),A1
  256.             JSR        CloseLibrary(A6)
  257. FreeChipMem        MOVE.L        #0,D0
  258.             MOVE.L        ChipMem(A4),A1
  259.             JSR        FreeMem(A6)
  260.             MOVE.L        WBMessage(A4),D5
  261.             BEQ.S        Quit
  262.             MOVE.L        D5,A1
  263.             JSR        ReplyMsg(A6)
  264. Quit            UNLK        A4
  265.             MOVEQ        #0,D0
  266.             RTS
  267.  
  268. Decrunch        LEA        Place(PC),A5
  269. Corect3            MOVEQ        #0,D1
  270.             MOVE.L        -(A0),D5
  271.             LSR.L        D1,D5
  272.             MOVEQ        #32,D7
  273.             SUB.B        D1,D7
  274. Dec1            BSR.S        Dec9
  275.             TST.B        D1
  276.             BNE.S        Dec4
  277.             MOVEQ        #0,D2
  278. Dec2            MOVEQ        #2,D0
  279.             BSR.S        Dec10
  280.             ADD.W        D1,D2
  281.             CMPI.W        #3,D1
  282.             BEQ.S        Dec2
  283. Dec3            MOVEQ        #8,D0
  284.             BSR.S        Dec10
  285.             MOVE.B        D1,-(A1)
  286.             DBF        D2,Dec3
  287.             CMPA.L        A1,A2
  288.             BCS.S        Dec4
  289.             RTS
  290. Dec4            MOVEQ        #2,D0
  291.             BSR.S        Dec10
  292.             MOVEQ        #0,D0
  293.             MOVE.B        0(A5,D1.W),D0
  294.             MOVE.L        D0,D4
  295.             MOVE.W        D1,D2
  296.             ADDQ.W        #1,D2
  297.             CMPI.W        #4,D2
  298.             BNE.S        Dec7
  299.             BSR.S        Dec9
  300.             MOVE.L        D4,D0
  301.             TST.B        D1
  302.             BNE.S        Dec5
  303.             MOVEQ        #7,D0
  304. Dec5            BSR.S        Dec10
  305.             MOVE.W        D1,D4
  306. Dec6            MOVEQ        #3,D0
  307.             BSR.S        Dec10
  308.             ADD.W        D1,D2
  309.             CMPI.W        #7,D1
  310.             BEQ.S        Dec6
  311.             BRA.S        Dec8
  312. Dec7            BSR.S        Dec10
  313.             MOVE.W        D1,D4
  314. Dec8            MOVE.B        0(A1,D4.W),-(A1)
  315.             DBF        D2,Dec8
  316.             CMPA.L        A1,A2
  317.             BCS.S        Dec1
  318.             RTS
  319. Dec9            MOVEQ        #1,D0
  320. Dec10            MOVEQ        #0,D1
  321.             SUBQ.W        #1,D0
  322. Dec11            LSR.L        #1,D5
  323.             ROXL.L        #1,D1
  324.             SUBQ.B        #1,D7
  325.             BNE.S        Dec12
  326.             MOVEQ        #32,D7
  327.             MOVE.L        -(A0),D5
  328. Dec12            DBF        D0,Dec11
  329.             RTS
  330.  
  331. Copyright        DC.B        $9B,'1;33;3430mCoreEye',$9B,'0;31;40m  '
  332.             DC.B        'Version 1.00  Copyright  ',$A9,'  14.09.1990  by  MC68',10
  333. TextLength        EQU        *-Copyright
  334. DosName            DC.B        'dos.library',0
  335.             EVEN
  336. Place            DCB.B        10000,0
  337.